home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / www_talk.930 / 001246_daemon _Thu Jun 10 21:02:40 1993.msg < prev    next >
Internet Message Format  |  1994-01-24  |  24KB

  1. Received: by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  2.     id AA00913; Thu, 10 Jun 93 21:02:54 MET DST
  3. Return-Path: <raisch@ora.com>
  4. Received: from dxmint.cern.ch by  nxoc01.cern.ch  (NeXT-1.0 (From Sendmail 5.52)/NeXT-2.0)
  5.     id AA00904; Thu, 10 Jun 93 21:02:40 MET DST
  6. Received: from [140.186.65.25] by dxmint.cern.ch (5.65/DEC-Ultrix/4.3)
  7.     id AA15575; Thu, 10 Jun 1993 21:24:07 +0200
  8. Received: by ora.com (5.65c/Spike-2.1)
  9.     id AA29318; Thu, 10 Jun 1993 15:23:20 -0400
  10. Date: Thu, 10 Jun 1993 15:23:20 -0400
  11. From: raisch@ora.com (Rob Raisch)
  12. Message-Id: <199306101923.AA29318@ora.com>
  13. To: www-talk@nxoc01.cern.ch
  14. Subject: Request for Comments: STYLESHEETS
  15.  
  16. Forwarded from comp.infosystems.www newsgroup:  (Sheesh, this is what comes
  17. from not following the conversation regarding gatewaying the list to the 
  18. group and vice versa.  <grin>)
  19.  
  20. </rr>
  21. -------------------------------------------------------------------------
  22. O'Reilly & Associates would like to solicit comments from the WWW online 
  23. community on the following proposal to include support for 'stylesheets' 
  24. in HTML documents.
  25.  
  26.     Date:        June 6 1993
  27.  
  28.     Title:        Stylesheets for HTML
  29.  
  30.     Author:        Robert Raisch
  31.             Manager, Online Systems
  32.             O'Reilly & Associates
  33.  
  34.     Abstract:
  35.  
  36.         Many interesting documents in the WWWeb are now being
  37.         designed to support features or attributes of specific
  38.         browsers/renderers.  While this is not, in itself, a
  39.         bad thing, the optimal state would be one where the
  40.         document carried with it information which allowed 
  41.         browsers to make 'appropriate' decisions which were
  42.         aligned with the intent of the original author.
  43.  
  44.         This RFC proposes an easily parsable format to deliver
  45.         stylistic information along with Web documents.  While
  46.         the actual format of this information is of little 
  47.         general interest to the Web community, an attempt has 
  48.         been made to support a simple subset of generally useful 
  49.         style HINTS or SUGGESTIONS.  This is not meant to be an 
  50.         exhaustive list and suggestions for improvement would 
  51.         be most welcome.
  52.  
  53.         In no way should this proposal be considered an attempt
  54.         to stipulate *required* behavior.  The sole purpose of
  55.         the included format is to suggest behavior which will
  56.         allow a browser to render a specific document in a form
  57.         which more closely resembles the document as envisioned
  58.         by it's creator.
  59.  
  60.     The author is indebted to the Global Network Navigator Project and
  61.     Digital Media and Design Groups of O'Reilly and Associates.
  62.  
  63.     Please direct comments to the newsgroup, or to 'raisch@ora.com'
  64.  
  65. --------------------------------------------------------------------------
  66. NOTE:
  67.  
  68.     The format described is supported in libWStyle, a stylesheet parser
  69.     library which will be released to the WWW developer community, REAL
  70.     SOON NOW.
  71.  
  72.     This document will be made available through the Web.  Due to 
  73.     the nature of certain discussions on the net, it is published here 
  74.     as a plain text document.  Apologies to Web purists.  </rr>
  75.  
  76. --------------------------------------------------------------------------
  77.  
  78.  
  79. WWW HTML STYLE GUIDE RECOMMENDATIONS        - Robert Raisch
  80.                           O'Reilly & Associates
  81.                           02 June 1993
  82.  
  83.  
  84. Need
  85. ----
  86.  
  87.     There is a need within the WWW to be able to specify rendering
  88. specific information along with the content tagging in a WWW document.
  89. It is not appropriate to use HTML for this purpose, since one of the 
  90. first principles of HTML is to encode objects within a document, not how 
  91. they might be rendered in a particular environment.
  92.  
  93.  
  94. Executive Summary -- The Short Form
  95. -----------------------------------
  96.  
  97.     o    HTML documents would include a LINK STYLE tag which would 
  98.         point to a stylesheet associated with the current
  99.         document.
  100.  
  101.     o    Stylesheet literate browsers or renderers would use this
  102.         tag to retrieve the actual stylesheet.
  103.  
  104.     o    Multiple stylesheets could be used per document to include
  105.         stylistic changes.  Once a new stylesheet was loaded it
  106.         would hide, not overwrite, the previous stylesheet.  The
  107.         previous stylesheet would become visible once an empty
  108.         LINK STYLE tag was encountered.
  109.  
  110.     o    Stylesheets are defined in a easy to parse, compact form
  111.         to minimize the time required to retrieve and interpret
  112.         them.
  113.  
  114.     o    Styles are suggestions or hints about behavior, not rules.
  115.  
  116.  
  117.  
  118. What we're doing here
  119. ---------------------
  120.  
  121.     This document is an attempt to codify those rendering aspects
  122. which would be most useful in the specification of an HTML object.  This is
  123. not meant to be an exhaustive list of rendering possibilities, nor is it 
  124. a set of "rules set in stone" which must be obeyed.  Rather, this is really 
  125. a set of HINTS or SUGGESTIONS to the renderer which might be used to display 
  126. particular HTML objects in the fashion the author of a document originally 
  127. intended.
  128.  
  129.     It is suggested that renderers which cannot adhere to some style
  130. specified in this document might make an attempt to remain true to the
  131. spirit of the author's original intent.  (Few renderers short of a true
  132. X-terminal will be able to implement the full set of styles defined here.)
  133.  
  134.     An example of this might be the use of a 'o' (small-oh) to represent 
  135. the 'round mark', or the interpretation of a color style specifying red on 
  136. white characters as a "reverse video" or "blinking" attribute on terminals 
  137. which do not support color.
  138.  
  139.     
  140. The Styles
  141. ----------
  142.  
  143.     The styles defined specify the recommended behavior of HTML objects
  144. in terms of:
  145.  
  146.     Category            Style Name
  147.     -----------------------        ----------
  148.     character rendering        font
  149.     object justification        justify
  150.     page layout            column
  151.     break behavior            break
  152.     special marks            mark
  153.     vertical object layout        vert
  154.     horizontal object layout    indent
  155.     links contained in objects    link
  156.  
  157.  
  158.     Each style has a number of arguments or attributes which can be
  159. specified per HTML object, and in the general case, as a default for all
  160. HTML objects which are not further refined.
  161.  
  162.  
  163. Stylesheet Identification 
  164. -------------------------
  165.  
  166.     HTML specifies a header element called <LINK> which can be used for a
  167. wide variety of purposes.  I suggest that the following form be followed:
  168.  
  169.     <LINK STYLE={URL}>
  170.  
  171.     It is expected that stylesheet literate browsers would retrieve the
  172. stylesheet from it's URL, and use the information contained therein to make
  173. appropriate rendering decisions.  (See Appendix II and III)
  174.  
  175.  
  176.  
  177. -----------------------------------------------------------------------------
  178.  Definition of Recommended Styles, Attributes and Values
  179. -----------------------------------------------------------------------------
  180.  
  181. font(family,spacing,size,weight,slant,foreground,background,line,longname)(fo) 
  182.  
  183.     Describes the characteristics of character representation.
  184.  
  185. (fa)    family=     FAMILY  (ti,he,sy,ty)             DEFAULT:ti
  186.  
  187.         Describes the 'subjective' style of a font.  This is not
  188.         meant as a font name, per se.  Rather it is a suggestion 
  189.         of a particular style of character representation.
  190.         Recommended values are: 
  191.  
  192.             times,        -- in the style of Serif Times Roman
  193.             helvetica,     -- in the style of Sans Serif Helvetica
  194.             system,     -- default system font style
  195.             typewriter    -- default "tty" font style
  196.  
  197. (sp)    spacing=    SPACING    (mo,pr)                 DEFAULT:mo
  198.  
  199.         Describes the intra-character spacing rule for a particular
  200.         character representation.  Recommended values are:
  201.  
  202.             monospaced,     -- each character takes up same space
  203.             proportional    -- each character takes up diff space
  204.  
  205. (si)    size=        UNITS     point size              DEFAULT:14
  206.  
  207.         Describes the size of the character representation in
  208.         general UNITS, which could be interpreted as a typographic
  209.         'point' size.  Recommended values are: 1-n
  210.  
  211. (we)    weight=        WEIGHT  (ul,li,me,de,bo)         DEFAULT:me
  212.  
  213.         Describes the general weight of a character representation
  214.         in the following recommended terms:
  215.  
  216.             ultralight,     -- lightest
  217.             light,         -- lighter than "normal"
  218.             medium,     -- "normal" weight
  219.             demibold,     -- heavier than "normal"
  220.             bold        -- heaviest
  221.  
  222. (sl)    slant=        SLANT   (ro,it,ob)             DEFAULT:ro
  223.  
  224.         Describes the slant or angle of a character representation
  225.         in the following terms:
  226.  
  227.             roman,        - normal upright representation
  228.             italic,        - forward inclination
  229.             oblique        - backward inclination (???)
  230.  
  231. (fo)    foreground=    COLOR                     DEFAULT:''
  232.  
  233.         Describes the recommended foreground color representation
  234.         for a character.  Colors are specified as 'inherit', text
  235.         names, (eg. black, white, magenta), or as RGB color 
  236.         values in hexidecimal, (eg. 0x000000, 0xffffff, 0xff00ff)
  237.         
  238. (ba)    background=    COLOR                     DEFAULT:''
  239.  
  240.         Describes the recommended background color representation
  241.                 for a character.  Colors are specified as 'inherit', text
  242.                 names, (eg. black, white, magenta), or as RGB color 
  243.                 values in hexidecimal, (eg. 0x000000, 0xffffff, 0xff00ff)
  244.  
  245. (li)    line=        LINE    (no,un,th,ov)             DEFAULT:no
  246.  
  247.         Describes the recommended representation of attendant 
  248.         lines in the character style.  Recommended values are:
  249.  
  250.             none,        -- no line highlighting object
  251.             under,        -- line under object (underline)
  252.             through,    -- line through object (strikeout)
  253.             over        -- line over object (overline)
  254.  
  255. (nu)    number=        UNITS    number of lines             DEFAULT:1
  256.  
  257.         Describes the recommended number of attendant lines in
  258.         the character style.  Recommended values are: 1-n
  259.  
  260. (lo)    longname=    STR    platform specific font name     DEFAULT:''
  261.  
  262.         Describes, in a platform specific fashion, the recommended
  263.         font name for a character representation.  A possible 
  264.         value might be:
  265.  
  266.         -adobe-courier-bold-r-normal--0-190-75-75-m-110-iso8859-1
  267.  
  268. -----------------------------------------------------------------------------
  269.  
  270. justify(style,hyphen,kern) (ju)
  271.  
  272.     Describes the characteristics of character and line justification.
  273.  
  274. (st)    style=        JUST style of justification (no,le,ce,ri,fu) DEFAULT:le
  275.  
  276.         Describes the recommended justification of an object.
  277.         Recommended values are:
  278.  
  279.             none,         -- no justification (PRE)
  280.             left,         -- justify object to the left
  281.             center,     -- center object
  282.             right,         -- justify object to the right
  283.             full        -- fully justify object
  284.  
  285. (hy)    hyphen        BOOL words can be hyphenated if possible DEFAULT:0
  286.  
  287.         Describes the recommendation that words which cross line
  288.         boundaries may be hyphenated to better represent the 
  289.         object.  Recommended values are either:
  290.  
  291.              FALSE (0) or TRUE (not FALSE)
  292.  
  293. (ke)    kern        BOOL words can be kerned if possible     DEFAULT:0
  294.  
  295.         Describes the recommendation that characters may be kerned
  296.         to better represent the object.  Recommended values are 
  297.         either: 
  298.  
  299.             FALSE (0) or TRUE (not FALSE)
  300.  
  301. -----------------------------------------------------------------------------
  302.  
  303. column(num) (co)
  304.  
  305.     Describes the characteristics of columnar layout.
  306.  
  307. (nu)    num=        UNITS    number of columns to display     DEFAULT:1
  308.  
  309.         Describes the maximal number of legal columns.  Recommended
  310.         values are:  1-n
  311.  
  312. (wi)    width=        UNITS    width of a column         DEFAULT:0
  313.  
  314.         Describes the maximal number of UNITS per column. In the
  315.         case of a text object, UNITS might represent characters,
  316.         while in the context of a graphical object, UNITS could
  317.         represent picture elements (pixels.)  Recommended values
  318.         are: 1-n
  319.  
  320. -----------------------------------------------------------------------------
  321.  
  322. break(location,object) (br)
  323.  
  324.     Describes the suggested behavior of an object in terms of it's
  325.     "breakability."  (Break in the sense that the current object is
  326.     broken, and the cursor or point of attention returns to the left-
  327.     most point of reference.)
  328.  
  329. (st)    style=        BREAK    how to break (be, af)         DEFAULT:af
  330.  
  331.         Describes the recommended style of breakage for the
  332.         object.  Recommended values are:
  333.  
  334.             before,        -- break appears before object
  335.             after        -- break appears after object
  336.  
  337. (ob)    object=        OBJ    what to break (no,it,li,ch)     DEFAULT:no
  338.  
  339.         Describes the recommended element of the object upon
  340.         which to break.  (For example, paragraphs traditionally
  341.         break upon the paragraph itself (item), while titles
  342.         or headers break upon each line.  Recommended values 
  343.         are:  
  344.  
  345.             none,         -- do not break
  346.             item,         -- break on the object itself
  347.             line,         -- break on each logical line
  348.             character    -- break on each character
  349.                         (included for completeness)
  350.  
  351. -----------------------------------------------------------------------------
  352.  
  353. mark(object,preceed,before,replace,succeed,after) (ma)
  354.  
  355.     Describes a mark or signal which can appear with an object.
  356.  
  357.     (NOTE: a "mark" can be specified in a number of ways.  Recommended
  358.     values for the mark are:
  359.         none,        -- no not mark
  360.         {string},    -- text which marks the object
  361.         {icon},        -- a graphical element or icon
  362.         arabic,        -- arabic numerals
  363.         alpha,        -- alphabetic numerals
  364.         roman,        -- roman numerals
  365.         vert,        -- vertical bar
  366.         horz,        -- horizontal bar
  367.         round,        -- bullet or circle
  368.         square,        -- square mark
  369.         check,        -- check mark
  370.         star,        -- star or asterix
  371.         north,        -- northward pointing arrow
  372.         south,        -- southward pointing arrow
  373.         east,        -- eastward pointing arrow
  374.         west        -- westward pointing arrow
  375.  
  376.     It is recommended that numeric marks (arabic,alpha,roman) be
  377.     incremented based on each instance of a particular object, eg.
  378.     the first instance of an object with the 'alpha' style of mark
  379.     could be marked with 'A', and the succeeding elements markes
  380.     with 'B', 'C', 'D', etc.  It is also recommended that upon a
  381.     change of mark, eg. from alpha to roman, could reset the 
  382.     current counter.
  383.     )
  384.  
  385. (ob)    object=        OBJ    what to mark (no,it,li,ch)     DEFAULT:no
  386.  
  387.         Describes what element within an object gets the mark.
  388.         Recommended values are:
  389.  
  390.             none,            (as above)
  391.             item,
  392.             line,
  393.             character
  394.     
  395. (pr)    preceed=    MARK    preceeding mark             DEFAULT:no
  396.  
  397.         Describes the mark or signal which could appear before
  398.         the previously mentioned element.
  399.  
  400. (be)    before=        UNITS    space btw mark and item         DEFAULT:0
  401.  
  402.         Describes the recommended amount of space before an object 
  403.         the mark appears.  (A UNIT takes on different interpretation
  404.         depending on the context, textual or graphical.) Recommended
  405.         values are: 1-n.
  406.  
  407.  
  408. (re)    replace=    MARK    mark which replaces content     DEFAULT:no
  409.  
  410.         Describes the mark or signal which could replace the 
  411.         previously mentioned element.
  412.  
  413. (su)    succeed=    MARK    succeeding mark             DEFAULT:no
  414.  
  415.         Describes the mark or signal which could appear after
  416.         the previously mentioned element.
  417.  
  418. (af)    after=        UNITS    space btw item and mark         DEFAULT:0
  419.  
  420.         Describes the recommended amount of space after an object 
  421.         the mark appears.  (A UNIT takes on different interpretation
  422.         depending on the context, textual or graphical.) Recommended
  423.         values are: 1-n.
  424.  
  425. -----------------------------------------------------------------------------
  426.  
  427. vert(before,after,spacing,offset) (ve)
  428.  
  429.     Describes the characteristics of an object in terms of vertical
  430.     geometry.
  431.  
  432. (be)    before=        UNITS    vertical space before object     DEFAULT:0
  433.  
  434.         Describes the amount of space in UNITS before an object.
  435.         (UNITS takes on different meaning depending on current
  436.         context.  See "column.width")
  437.  
  438. (af)    after=        UNITS    vertical space after item     DEFAULT:0
  439.  
  440.         Describes the amount of space in UNITS after an object.
  441.         (UNITS takes on different meaning depending on current
  442.         context.  See "column.width")
  443.  
  444. (le)    leading=    UNITS    vertical spacing between lines     DEFAULT:0
  445.  
  446.         Describes the amount of space in UNITS between objects.
  447.         (UNITS takes on different meaning depending on current
  448.         context.  See "column.width")
  449.  
  450. (of)    offset=        UNITS    vertical spacing from baseline     DEFAULT:0
  451.  
  452.         Describes the amount of space in UNITS between an object
  453.         and the baseline.  (Allows supscripting and superscripting.)
  454.         (UNITS takes on different meaning depending on current
  455.         context.  See "column.width")
  456.  
  457.  
  458. -----------------------------------------------------------------------------
  459.  
  460. indent(left,right,first) (in)
  461.  
  462.     Describes the characteristics of an object in terms of horizontal
  463.     geography.
  464.  
  465. (le)    left=        UNITS    horizontal space before item     DEFAULT:0
  466.  
  467.         Describes the amount of space, in UNITS, before or to the
  468.         left of the object.
  469.  
  470. (ri)    right=        UNITS    horizontal space after item     DEFAULT:0
  471.  
  472.         Describes the amount of space, in UNITS, after or to the
  473.         right of the object.
  474.  
  475. (fi)    first=        UNITS    indent for object         DEFAULT:0
  476.  
  477.         Describes the amount of space, in UNITS, before the first
  478.         line of an object.
  479.  
  480.  
  481. -----------------------------------------------------------------------------
  482.  
  483. link(location,mark,line,number,before,after,hide) (li)
  484.  
  485.     Describes the special characteristics of a link or selectable
  486.     object.
  487.  
  488. (lo)    location=    TOKEN    (no,in,ri,le)             DEFAULT:of
  489.  
  490.         Describes where a link might appear.  Recommended values
  491.         are: 
  492.  
  493.             none,        -- suppress link marking
  494.             inline,        -- mark links inline
  495.             right,        -- mark links in right margin
  496.             left,        -- mark links in left margin
  497.             start,        -- collect links at start of object
  498.             end        -- collect links at end of object
  499.  
  500. (ma)    mark=        MARK    mark to display as link         DEFAULT:no
  501.  
  502.         Describes the mark to display, highlighting this link.
  503.         (See mark previously for explanation of mark types.)
  504.  
  505. (li)    line=        LINE    (no,un,th,ov)             DEFAULT:un
  506.  
  507.         Describes the line characteristics of a link.  Recommended
  508.         values are: 
  509.  
  510.             none,        -- no line highlighting link
  511.             under,        -- line under object (underline)
  512.             through,    -- line through object (strikeout)
  513.             over        -- line over object (overline)
  514.  
  515. (nu)    number=        UNITS    number of lines             DEFAULT:1
  516.  
  517.         Describes the number of lines to use to highlight a link.
  518.         Recommended values are: 1-n
  519.  
  520. (be)    before=        MARK    mark to display before link     DEFAULT:no
  521.  
  522.         Describes the mark to display before the link.  (See mark
  523.         previously for explanation of mark types.)
  524.  
  525. (af)    after=        MARK    mark to display after link     DEFAULT:no
  526.  
  527.         Describes the mark to display after the link.  (See mark
  528.         previously for explanation of mark types.)
  529.  
  530. (hi)    hide=        BOOL    hide link content         DEFAULT:0
  531.  
  532.         Describes the intent to hide the content of a link.  This
  533.         is included to handle the possibility of an object having
  534.         a graphical mark which signifies a link where the actual
  535.         textual component of the link (the text held between the <A>
  536.         and it's matching </A>) is not intended to be displayed.  
  537.         On a text-only display, the graphic might be ignored and 
  538.         the text might be displayed in it's place. Recommended
  539.         values are: 
  540.  
  541.             FALSE (0) and TRUE (not FALSE)
  542.  
  543. -----------------------------------------------------------------------------
  544.  
  545.  
  546.  
  547. APPENDIX I
  548. EXAMPLE STYLESHEET FOR AN IMAGINARY HTML DOCUMENT
  549. -----------------------------------------------------
  550.  
  551. # DEFAULT for all succeeding objects..
  552.  
  553. @DEFAULT fo(fa=ti,sp=pr,si=14,we=me,sl=ro,fo=in,bo=in,li=no,nu=1,fn='')
  554. ju(st=le,hy=0,ke=0) co(nu=1,wi=80) br(lo=af,ob=it) 
  555. ma(ob=it,pr=no,be=0,re=no,su=no,af=0) 
  556. ve(be=0,af=0,sp=0,of=0) in(le=0,ri=0,fi=0)
  557. li(lo=in,ma=no,li=un,nu=1,be=no,af=no,hi=0)
  558.  
  559. # TITLE object style (font size becomes 24)
  560. @TITLE fo(si=24) 
  561.  
  562. # BODY object style (font family becomes helvetica, font size becomes 18)
  563. @BODY fo(fa=he,si=18) 
  564.  
  565. # PARAGRAPH SEPERATOR object style (break after item, vertical space after =1)
  566. @P br(lo=af,ob=it) ve(af=1)
  567.  
  568. # Headers
  569. @H1 fo(si=32,we=bo) ve(be=1,af=2) @H2 fo(si=24,we=bo) ve(be=1,af=2)
  570. @H3 fo(si=18,we=bo) ve(be=1,af=2) @H4 fo(si=16,we=bo) ve(be=1,af=2)
  571. @H5 fo(si=14,we=bo) ve(be=1,af=2) @H6 fo(si=12,we=bo) ve(be=1,af=2)
  572.  
  573. # Some List Stuff
  574. @UL in(le=5)
  575. @LI ma(pr=ro,be=4) in(le=10,ri=10) 
  576.  
  577. # Standards
  578. @B fo(we=bo) @I fo(sl=it) @U fo(li=un, nu=1)
  579.  
  580. # Anchors with some colour
  581. @A fo(fo='yellow',ba='black')
  582.  
  583.  
  584. -----------------------------------------------------------------------------
  585.  
  586. APPENDIX II
  587. Stylesheet Layout and Parsing Considerations    --    (TECHNICAL DETAIL)
  588. --------------------------------------------
  589.  
  590.     An example stylesheet follows the discussion of the various styles,
  591. and details the recommended layout of a stylesheet.
  592.  
  593.     Each element of the stylesheet is uniquely marked and the name of 
  594. each style and style attribute has been chosen to be unique to the first 
  595. two letters, which makes parsing the style-sheet a simple task.
  596.  
  597. Parsing Rule #1:
  598.  
  599.     Lines which do not have as their first non-whitespace character
  600.     either an '@' which signals the beginning of a new object definition 
  601.     or an alphabetic [a-zA-Z], will be ignored to the end of the line.
  602.  
  603. Parsing Rule #2:
  604.  
  605.     Next we throw out all the newlines and scan the remaining buffer.
  606.     An '@' (at-sign) signals the beginning of a new HTML object definition.
  607.  
  608. Parsing Rule #3:
  609.     
  610.     After the '@' and possible intervening whitespace, we expect the name 
  611.     of an HTML object (eg. TITLE, H1, B, STRONG, etc.)
  612.  
  613. Parsing Rule #4:
  614.  
  615.     After the name, and intervening whitespace, we expect at least two
  616.     characters which signal the beginning of a style. Legal values are:
  617.         fo, ju, co, br, ma, ve, in, li
  618.  
  619. Parsing Rule #5:
  620.  
  621.     After the two character style specifier, scan to the '(' (open-paren)
  622.     and ignore intervening data or whitespace.
  623.  
  624. ... (I think you get the idea, but I'll fill this in later if necessary)
  625.  
  626. -----------------------------------------------------------------------------
  627.  
  628.  
  629. APPENDIX III
  630. Use of Stylistic Hints or Suggestions - Typical Scenario -- (MUY TECHNICAL!!)
  631. --------------------------------------------------------
  632.  
  633.     A renderer which understands the <LINK STYLE> tag would use the URL
  634. to retrieve the stylesheet, and run it through the WWW style library,
  635. (libStyle.a -- to be supplied, currently in development.)
  636.  
  637.     Once the stylesheet has been loaded, when an HTML element is 
  638. encountered within the document, the renderer has the option of calling the
  639. style library, asking for advice on how to render the specific element.
  640.  
  641. For example:    (scans all styles and renderer sets attributes)
  642.  
  643.         ***Renderer begins to scan document***
  644.  
  645.         ***Renderer recognizes <LINK STYLE={URL}>***
  646.  
  647.           loadStyleSheet( {URL});
  648.  
  649.         ***Renderer sees a <TITLE> tag in the document***
  650.  
  651.           current = firstStyle( styles = queryStyleSheet( TITLE));
  652.  
  653.           while( current) {
  654.  
  655.             switch( styleName( current)) {
  656.  
  657.               case FONT: {
  658.             while( nextAttr( current)) {
  659.  
  660.               switch( attr) {
  661.  
  662.                 case FAMILY:
  663.                   switch( attrValue(attr)) {
  664.  
  665.                 case TIMES:
  666.                     ***Renderer decides what to do here***
  667.                 case HELVETICA:
  668.                 case SYSTEM:
  669.                 case TYPEWRITER:
  670.                 default:
  671.                   }
  672.                 case SPACING:
  673.                 case SIZE:
  674.                 case WEIGHT:
  675.                 case SLANT:
  676.                 case FOREGROUND:
  677.                 case BACKGROUND:  
  678.                 case LINE:
  679.                 case LONGNAME:
  680.                 default:
  681.               }
  682.             }
  683.             break;
  684.               }
  685.               case JUSTIFY:
  686.             break;
  687.               case COLUMNS:
  688.             break;
  689.               case BREAK:
  690.             break;
  691.               case MARK:
  692.             break;
  693.               case VERTICAL:
  694.             break;
  695.               case INDENT:
  696.             break;
  697.               case LINK:
  698.             break;
  699.               default:
  700.             ***Ignore -- Illegal style***
  701.             }
  702.             current = nextStyle( styles);
  703.           }
  704.  
  705.  
  706. Another example:    (renderer sets attributes only for styles needed)
  707.  
  708.         ***Renderer begins to scan document***
  709.  
  710.         ***Renderer recognizes <LINK STYLE={URL}>***
  711.  
  712.           loadStyleSheet( {URL});
  713.  
  714.         ***Renderer sees a <TITLE> tag in the document***
  715.  
  716.             switch( getValue(TITLE, FONT, FAMILY)) {
  717.             *** renderer decides what to do here***
  718.                 case UNKNOWN:    
  719.                 case TIMES:
  720.                 case HELVETICA:
  721.                 case SYSTEM:
  722.                 case TYPEWRITER:
  723.             }
  724.  
  725.         ***Renderer sees a <H1> tag in the document***
  726.  
  727.             switch( getValue( H1, BREAK, STYLE)) {
  728.                 case UNKNOWN:
  729.                 case BEFORE:
  730.                 case AFTER:
  731.             }
  732.  
  733.           etc.
  734.  
  735.